package service

import (
	"context"
	"monoblog/common/register"
	"monoblog/domain/dto"
	"monoblog/domain/model"
)

func GetSearchService() SearchService {
	return register.GetInstance[SearchService]("SearchService")
}

type SearchService interface {

	// ClearHidden 清除hidden数据
	ClearHidden(ctx context.Context) error

	// ExistSearch 检查博客是否存在
	ExistSearch(ctx context.Context, blogId string) (bool, error)

	// PushData 同步数据到搜索引擎
	PushData(ctx context.Context, data *model.Article) error

	// BatchPushData 批量同步数据到搜索引擎
	BatchPushData(ctx context.Context, list []*model.Article) error

	// UpdateData 更新搜索引擎中的数据
	UpdateData(ctx context.Context, list []*model.BlogStats) error

	// SearchBlogs 搜索博客文章
	SearchBlogs(ctx context.Context, query dto.SearchQuery) ([]*model.BlogDoc, error)

	// SearchAuthors 搜索作者
	SearchAuthors(ctx context.Context, query dto.SearchQuery) ([]*model.WebUser, error)
}
